# Dual Geodesic Icosahedron Pattern 6 [3,1]
# Retreived Oct 2018 from: http://dmccooey.com/polyhedra/DualGeodesicIcosahedron6.txt
import numpy as np


C0  = 0.0278728483334650370381795124317
C1  = 0.0417605902707273450330202218460
C2  = 0.0482207631985655347048259575806
C3  = 0.0485271500913616902083332985770
C4  = 0.0931391956773255725056107681612
C5  = 0.0965573626835274272370348719303
C6  = 0.107547404625872186617181540007
C7  = 0.115790817646860551951256687036
C8  = 0.119783424089466474929919797595048
C9  = 0.145586591764509108593032943711
C10 = 0.1455928882670341471433303052049
C11 = 0.194113741855870798801366242288
C12 = 0.220431462018603598005258179308
C13 = 0.238188705049775063930022711304
C14 = 0.239202575383431558854091591763
C15 = 0.258249788916612246877163454031
C16 = 0.267154551763824439262804947967
C17 = 0.283287921016592357037529251132
C18 = 0.298950040243594377815031134048
C19 = 0.324717740377238927017176093829
C20 = 0.332341771060757131359702359924
C21 = 0.334746067733302491167057583234
C22 = 0.358695307225219637200425804924
C23 = 0.379845283700119784274564123062
C24 = 0.405175083258563434157399921336
C25 = 0.405192747827293817829885928720
C26 = 0.413270268840324805049177290081
C27 = 0.430496636473677061118504317477
C28 = 0.435184175960922907431325584883
C29 = 0.446935673529290779190420143182
C30 = 0.506357127147255998116896539729
C31 = 0.524958507348029909087319718931
C32 = 0.534514094024825642786011006694
C33 = 0.550779339591802926422918872431
C34 = 0.569503363526322938881495682523
C35 = 0.580381198695491106718671839452
C36 = 0.586729731159675194950822709919
C37 = 0.592528561796324926333750448387
C38 = 0.629297917816793706232691827171
C39 = 0.640749324994890461038576405968
C40 = 0.645287686083513420132210630583
C41 = 0.657059511437996058376878453752
C42 = 0.670748229742154172402305457529
C43 = 0.711755637544140100272223270381
C44 = 0.719275379833515862610638756106
C45 = 0.764606916063868244994059993760
C46 = 0.765242704206979552285561900711
C47 = 0.771377873753784688028391160270
C48 = 0.793115552540444589323741413143
C49 = 0.801179944373958283220464778439
C50 = 0.804894833221465672777834038542
C51 = 0.824918436209450258880845421223
C52 = 0.8429405346446856282534850002848
C53 = 0.849729379835397304237950006479
C54 = 0.8527912845429152959190249336546
C55 = 0.8911612978432511629583109578654
C56 = 0.912442237847337859395015578549
C57 = 0.9169707620208188351717214654752
C58 = 0.939076505920710743919097644376
C59 = 0.939706841852119460615896935414
C60 = 0.969698269985748550217336591577
C61 = 0.970005426460752347149386724411


sphere_vertices = np.array([
	[  C5,   C0,  1.0],
	[  C5,  -C0, -1.0],
	[ -C5,  -C0,  1.0],
	[ -C5,   C0, -1.0],
	[ 1.0,   C5,   C0],
	[ 1.0,  -C5,  -C0],
	[-1.0,  -C5,   C0],
	[-1.0,   C5,  -C0],
	[  C0,  1.0,   C5],
	[  C0, -1.0,  -C5],
	[ -C0, -1.0,   C5],
	[ -C0,  1.0,  -C5],
	[ C14,  -C6,  C61],
	[ C14,   C6, -C61],
	[-C14,   C6,  C61],
	[-C14,  -C6, -C61],
	[ C61, -C14,   C6],
	[ C61,  C14,  -C6],
	[-C61,  C14,   C6],
	[-C61, -C14,  -C6],
	[  C6, -C61,  C14],
	[  C6,  C61, -C14],
	[ -C6,  C61,  C14],
	[ -C6, -C61, -C14],
	[  C9,  C12,  C60],
	[  C9, -C12, -C60],
	[ -C9, -C12,  C60],
	[ -C9,  C12, -C60],
	[ C60,   C9,  C12],
	[ C60,  -C9, -C12],
	[-C60,  -C9,  C12],
	[-C60,   C9, -C12],
	[ C12,  C60,   C9],
	[ C12, -C60,  -C9],
	[-C12, -C60,   C9],
	[-C12,  C60,  -C9],
	[ C11, -C18,  C59],
	[ C11,  C18, -C59],
	[-C11,  C18,  C59],
	[-C11, -C18, -C59],
	[ C59, -C11,  C18],
	[ C59,  C11, -C18],
	[-C59,  C11,  C18],
	[-C59, -C11, -C18],
	[ C18, -C59,  C11],
	[ C18,  C59, -C11],
	[-C18,  C59,  C11],
	[-C18, -C59, -C11],
	[ 0.0,  C22,  C58],
	[ 0.0,  C22, -C58],
	[ 0.0, -C22,  C58],
	[ 0.0, -C22, -C58],
	[ C58,  0.0,  C22],
	[ C58,  0.0, -C22],
	[-C58,  0.0,  C22],
	[-C58,  0.0, -C22],
	[ C22,  C58,  0.0],
	[ C22, -C58,  0.0],
	[-C22,  C58,  0.0],
	[-C22, -C58,  0.0],
	[ C24,  -C2,  C57],
	[ C24,   C2, -C57],
	[-C24,   C2,  C57],
	[-C24,  -C2, -C57],
	[ C57, -C24,   C2],
	[ C57,  C24,  -C2],
	[-C57,  C24,   C2],
	[-C57, -C24,  -C2],
	[  C2, -C57,  C24],
	[  C2,  C57, -C24],
	[ -C2,  C57,  C24],
	[ -C2, -C57, -C24],
	[ C20,  C15,  C56],
	[ C20, -C15, -C56],
	[-C20, -C15,  C56],
	[-C20,  C15, -C56],
	[ C56,  C20,  C15],
	[ C56, -C20, -C15],
	[-C56, -C20,  C15],
	[-C56,  C20, -C15],
	[ C15,  C56,  C20],
	[ C15, -C56, -C20],
	[-C15, -C56,  C20],
	[-C15,  C56, -C20],
	[ C29,   C7,  C55],
	[ C29,  -C7, -C55],
	[-C29,  -C7,  C55],
	[-C29,   C7, -C55],
	[ C55,  C29,   C7],
	[ C55, -C29,  -C7],
	[-C55, -C29,   C7],
	[-C55,  C29,  -C7],
	[  C7,  C55,  C29],
	[  C7, -C55, -C29],
	[ -C7, -C55,  C29],
	[ -C7,  C55, -C29],
	[ C21, -C26,  C54],
	[ C21,  C26, -C54],
	[-C21,  C26,  C54],
	[-C21, -C26, -C54],
	[ C54, -C21,  C26],
	[ C54,  C21, -C26],
	[-C54,  C21,  C26],
	[-C54, -C21, -C26],
	[ C26, -C54,  C21],
	[ C26,  C54, -C21],
	[-C26,  C54,  C21],
	[-C26, -C54, -C21],
	[  C3,  C32,  C53],
	[  C3, -C32, -C53],
	[ -C3, -C32,  C53],
	[ -C3,  C32, -C53],
	[ C53,   C3,  C32],
	[ C53,  -C3, -C32],
	[-C53,  -C3,  C32],
	[-C53,   C3, -C32],
	[ C32,  C53,   C3],
	[ C32, -C53,  -C3],
	[-C32, -C53,   C3],
	[-C32,  C53,  -C3],
	[ C31, -C10,  C52],
	[ C31,  C10, -C52],
	[-C31,  C10,  C52],
	[-C31, -C10, -C52],
	[ C52, -C31,  C10],
	[ C52,  C31, -C10],
	[-C52,  C31,  C10],
	[-C52, -C31, -C10],
	[ C10, -C52,  C31],
	[ C10,  C52, -C31],
	[-C10,  C52,  C31],
	[-C10, -C52, -C31],
	[ C23,  C27,  C51],
	[ C23, -C27, -C51],
	[-C23, -C27,  C51],
	[-C23,  C27, -C51],
	[ C51,  C23,  C27],
	[ C51, -C23, -C27],
	[-C51, -C23,  C27],
	[-C51,  C23, -C27],
	[ C27,  C51,  C23],
	[ C27, -C51, -C23],
	[-C27, -C51,  C23],
	[-C27,  C51, -C23],
	[ C30, -C19,  C50],
	[ C30,  C19, -C50],
	[-C30,  C19,  C50],
	[-C30, -C19, -C50],
	[ C50, -C30,  C19],
	[ C50,  C30, -C19],
	[-C50,  C30,  C19],
	[-C50, -C30, -C19],
	[ C19, -C50,  C30],
	[ C19,  C50, -C30],
	[-C19,  C50,  C30],
	[-C19, -C50, -C30],
	[ C37,   C8,  C49],
	[ C37,  -C8, -C49],
	[-C37,  -C8,  C49],
	[-C37,   C8, -C49],
	[ C49,  C37,   C8],
	[ C49, -C37,  -C8],
	[-C49, -C37,   C8],
	[-C49,  C37,  -C8],
	[  C8,  C49,  C37],
	[  C8, -C49, -C37],
	[ -C8, -C49,  C37],
	[ -C8,  C49, -C37],
	[ C13,  C34,  C48],
	[ C13, -C34, -C48],
	[-C13, -C34,  C48],
	[-C13,  C34, -C48],
	[ C48,  C13,  C34],
	[ C48, -C13, -C34],
	[-C48, -C13,  C34],
	[-C48,  C13, -C34],
	[ C34,  C48,  C13],
	[ C34, -C48, -C13],
	[-C34, -C48,  C13],
	[-C34,  C48, -C13],
	[ C39,  -C1,  C47],
	[ C39,   C1, -C47],
	[-C39,   C1,  C47],
	[-C39,  -C1, -C47],
	[ C47, -C39,   C1],
	[ C47,  C39,  -C1],
	[-C47,  C39,   C1],
	[-C47, -C39,  -C1],
	[  C1, -C47,  C39],
	[  C1,  C47, -C39],
	[ -C1,  C47,  C39],
	[ -C1, -C47, -C39],
	[ C17, -C36,  C46],
	[ C17,  C36, -C46],
	[-C17,  C36,  C46],
	[-C17, -C36, -C46],
	[ C46, -C17,  C36],
	[ C46,  C17, -C36],
	[-C46,  C17,  C36],
	[-C46, -C17, -C36],
	[ C36, -C46,  C17],
	[ C36,  C46, -C17],
	[-C36,  C46,  C17],
	[-C36, -C46, -C17],
	[  C4, -C40,  C45],
	[  C4,  C40, -C45],
	[ -C4,  C40,  C45],
	[ -C4, -C40, -C45],
	[ C45,  -C4,  C40],
	[ C45,   C4, -C40],
	[-C45,   C4,  C40],
	[-C45,  -C4, -C40],
	[ C40, -C45,   C4],
	[ C40,  C45,  -C4],
	[-C40,  C45,   C4],
	[-C40, -C45,  -C4],
	[ C33,  C28,  C44],
	[ C33, -C28, -C44],
	[-C33, -C28,  C44],
	[-C33,  C28, -C44],
	[ C44,  C33,  C28],
	[ C44, -C33, -C28],
	[-C44, -C33,  C28],
	[-C44,  C33, -C28],
	[ C28,  C44,  C33],
	[ C28, -C44, -C33],
	[-C28, -C44,  C33],
	[-C28,  C44, -C33],
	[ C41,  C16,  C43],
	[ C41, -C16, -C43],
	[-C41, -C16,  C43],
	[-C41,  C16, -C43],
	[ C43,  C41,  C16],
	[ C43, -C41, -C16],
	[-C43, -C41,  C16],
	[-C43,  C41, -C16],
	[ C16,  C43,  C41],
	[ C16, -C43, -C41],
	[-C16, -C43,  C41],
	[-C16,  C43, -C41],
	[ C38, -C25,  C42],
	[ C38,  C25, -C42],
	[-C38,  C25,  C42],
	[-C38, -C25, -C42],
	[ C42, -C38,  C25],
	[ C42,  C38, -C25],
	[-C42,  C38,  C25],
	[-C42, -C38, -C25],
	[ C25, -C42,  C38],
	[ C25,  C42, -C38],
	[-C25,  C42,  C38],
	[-C25, -C42, -C38],
	[ C35,  C35,  C35],
	[ C35,  C35, -C35],
	[ C35, -C35,  C35],
	[ C35, -C35, -C35],
	[-C35,  C35,  C35],
	[-C35,  C35, -C35],
	[-C35, -C35,  C35],
	[-C35, -C35, -C35]
])


sphere_faces = [
	[  60, 120, 180, 156,  84 ],
	[  61, 121, 181, 157,  85 ],
	[  62, 122, 182, 158,  86 ],
	[  63, 123, 183, 159,  87 ],
	[  64, 124, 184, 161,  89 ],
	[  65, 125, 185, 160,  88 ],
	[  66, 126, 186, 163,  91 ],
	[  67, 127, 187, 162,  90 ],
	[  68, 128, 188, 166,  94 ],
	[  69, 129, 189, 167,  95 ],
	[  70, 130, 190, 164,  92 ],
	[  71, 131, 191, 165,  93 ],
	[  72,  24,   0,  12,  60,  84 ],
	[  73,  25,   1,  13,  61,  85 ],
	[  74,  26,   2,  14,  62,  86 ],
	[  75,  27,   3,  15,  63,  87 ],
	[  76,  28,   4,  17,  65,  88 ],
	[  77,  29,   5,  16,  64,  89 ],
	[  78,  30,   6,  19,  67,  90 ],
	[  79,  31,   7,  18,  66,  91 ],
	[  80,  32,   8,  22,  70,  92 ],
	[  81,  33,   9,  23,  71,  93 ],
	[  82,  34,  10,  20,  68,  94 ],
	[  83,  35,  11,  21,  69,  95 ],
	[  84, 156, 228, 216, 132,  72 ],
	[  85, 157, 229, 217, 133,  73 ],
	[  86, 158, 230, 218, 134,  74 ],
	[  87, 159, 231, 219, 135,  75 ],
	[  88, 160, 232, 220, 136,  76 ],
	[  89, 161, 233, 221, 137,  77 ],
	[  90, 162, 234, 222, 138,  78 ],
	[  91, 163, 235, 223, 139,  79 ],
	[  92, 164, 236, 224, 140,  80 ],
	[  93, 165, 237, 225, 141,  81 ],
	[  94, 166, 238, 226, 142,  82 ],
	[  95, 167, 239, 227, 143,  83 ],
	[  96, 144, 120,  60,  12,  36 ],
	[  97, 145, 121,  61,  13,  37 ],
	[  98, 146, 122,  62,  14,  38 ],
	[  99, 147, 123,  63,  15,  39 ],
	[ 100, 148, 124,  64,  16,  40 ],
	[ 101, 149, 125,  65,  17,  41 ],
	[ 102, 150, 126,  66,  18,  42 ],
	[ 103, 151, 127,  67,  19,  43 ],
	[ 104, 152, 128,  68,  20,  44 ],
	[ 105, 153, 129,  69,  21,  45 ],
	[ 106, 154, 130,  70,  22,  46 ],
	[ 107, 155, 131,  71,  23,  47 ],
	[ 108, 168, 236, 164, 190, 206 ],
	[ 109, 169, 237, 165, 191, 207 ],
	[ 110, 170, 238, 166, 188, 204 ],
	[ 111, 171, 239, 167, 189, 205 ],
	[ 112, 172, 228, 156, 180, 208 ],
	[ 113, 173, 229, 157, 181, 209 ],
	[ 114, 174, 230, 158, 182, 210 ],
	[ 115, 175, 231, 159, 183, 211 ],
	[ 116, 176, 232, 160, 185, 213 ],
	[ 117, 177, 233, 161, 184, 212 ],
	[ 118, 178, 234, 162, 187, 215 ],
	[ 119, 179, 235, 163, 186, 214 ],
	[ 120, 144, 240, 196, 208, 180 ],
	[ 121, 145, 241, 197, 209, 181 ],
	[ 122, 146, 242, 198, 210, 182 ],
	[ 123, 147, 243, 199, 211, 183 ],
	[ 124, 148, 244, 200, 212, 184 ],
	[ 125, 149, 245, 201, 213, 185 ],
	[ 126, 150, 246, 202, 214, 186 ],
	[ 127, 151, 247, 203, 215, 187 ],
	[ 128, 152, 248, 192, 204, 188 ],
	[ 129, 153, 249, 193, 205, 189 ],
	[ 130, 154, 250, 194, 206, 190 ],
	[ 131, 155, 251, 195, 207, 191 ],
	[  48,  24,  72, 132, 168, 108 ],
	[  48, 108, 206, 194,  98,  38 ],
	[  48,  38,  14,   2,   0,  24 ],
	[  49,  27,  75, 135, 171, 111 ],
	[  49, 111, 205, 193,  97,  37 ],
	[  49,  37,  13,   1,   3,  27 ],
	[  50,  26,  74, 134, 170, 110 ],
	[  50, 110, 204, 192,  96,  36 ],
	[  50,  36,  12,   0,   2,  26 ],
	[  51,  25,  73, 133, 169, 109 ],
	[  51, 109, 207, 195,  99,  39 ],
	[  51,  39,  15,   3,   1,  25 ],
	[  52,  28,  76, 136, 172, 112 ],
	[  52, 112, 208, 196, 100,  40 ],
	[  52,  40,  16,   5,   4,  28 ],
	[  53,  29,  77, 137, 173, 113 ],
	[  53, 113, 209, 197, 101,  41 ],
	[  53,  41,  17,   4,   5,  29 ],
	[  54,  30,  78, 138, 174, 114 ],
	[  54, 114, 210, 198, 102,  42 ],
	[  54,  42,  18,   7,   6,  30 ],
	[  55,  31,  79, 139, 175, 115 ],
	[  55, 115, 211, 199, 103,  43 ],
	[  55,  43,  19,   6,   7,  31 ],
	[  56,  32,  80, 140, 176, 116 ],
	[  56, 116, 213, 201, 105,  45 ],
	[  56,  45,  21,  11,   8,  32 ],
	[  57,  33,  81, 141, 177, 117 ],
	[  57, 117, 212, 200, 104,  44 ],
	[  57,  44,  20,  10,   9,  33 ],
	[  58,  35,  83, 143, 179, 119 ],
	[  58, 119, 214, 202, 106,  46 ],
	[  58,  46,  22,   8,  11,  35 ],
	[  59,  34,  82, 142, 178, 118 ],
	[  59, 118, 215, 203, 107,  47 ],
	[  59,  47,  23,   9,  10,  34 ],
	[ 252, 216, 228, 172, 136, 220 ],
	[ 252, 220, 232, 176, 140, 224 ],
	[ 252, 224, 236, 168, 132, 216 ],
	[ 253, 241, 145,  97, 193, 249 ],
	[ 253, 249, 153, 105, 201, 245 ],
	[ 253, 245, 149, 101, 197, 241 ],
	[ 254, 240, 144,  96, 192, 248 ],
	[ 254, 248, 152, 104, 200, 244 ],
	[ 254, 244, 148, 100, 196, 240 ],
	[ 255, 217, 229, 173, 137, 221 ],
	[ 255, 221, 233, 177, 141, 225 ],
	[ 255, 225, 237, 169, 133, 217 ],
	[ 256, 242, 146,  98, 194, 250 ],
	[ 256, 250, 154, 106, 202, 246 ],
	[ 256, 246, 150, 102, 198, 242 ],
	[ 257, 219, 231, 175, 139, 223 ],
	[ 257, 223, 235, 179, 143, 227 ],
	[ 257, 227, 239, 171, 135, 219 ],
	[ 258, 218, 230, 174, 138, 222 ],
	[ 258, 222, 234, 178, 142, 226 ],
	[ 258, 226, 238, 170, 134, 218 ],
	[ 259, 243, 147,  99, 195, 251 ],
	[ 259, 251, 155, 107, 203, 247 ],
	[ 259, 247, 151, 103, 199, 243 ]
]


